/*
* 单例模式中的单例就是确保一个类只有一个实例，就可以在全局访问了，也就是在整个应用程序中均可以共享。常用于管理全局资源、单例的状态、单例对象的数量控制等场景。
*单例模式的基本思路是在类中创建一个私有静态实例，通过一个公有的静态方法来访问这个实例。如果实例还没有创建，那么这个方法会创建一个新的实例并返回，否则直接返回之前创建的实例。
 */
// * class实现

class SingletonClass {
    constructor(name,age) {
        if (!SingletonClass.instance) {
            this.name = name
            this.age = age
            SingletonClass.instance = this
        }
        return SingletonClass.instance
    }
}

console.log(new SingletonClass("Taobao", 18) === new SingletonClass("Baidu", 15))

// * 闭包实现
function Singleton() {
    let instance
    function create() {
        return {}
    }
    return function () {
        if (!instance) {
            instance = create()
        }
        return instance
    }
}

const s = Singleton()
const s1 = s()
const s2 = s()
console.log(s1 === s2)
